[Delphi] How would you refactor this code?

Posted by Al C on Stack Overflow See other posts from Stack Overflow or by Al C
Published on 2010-05-07T16:10:29Z Indexed on 2010/05/07 16:38 UTC
Read the original article Hit count: 265

This hypothetical example illustrates several problems I can't seem to get past, even though I keep trying!! ... Suppose the original code is a long event handler, coded in the UI, triggered when a user clicks a cell in a grid. Expressed as pseudocode it's:

if Condition1=true then
begin
  //loop through every cell in row, 
  //if aCell/headerCellValue>1 then
  //color aCell red
end
else if Condition2=true then
begin
  //do some other calculation adding cell and headerCell values, and
  //if some other product>2 then
  //color the whole row green
end
else show an error message

I look at this and say "Ah, refactor to the strategy pattern! The code will be easier to understand, easier to debug, and easier to later extend!" I get that.

And I can easily break the code into multiple procedures.

The problem is ultimately scope related. Assume the pseudocode makes extensive use of grid properties, values displayed in cells, maybe even built-in grid methods. How do you move all that to another unit, without referencing the grid component in the UI--which would break all the "rules" about loose coupling that make OOP valuable? ...

I'm really looking forward to responses. Thanks, as always -- Al C.

© Stack Overflow or respective owner

Related posts about delphi

Related posts about beginner